package com.demo.java.OD101_150.OD124;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【整数编码】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145721785
 */
public class OdMain {
    // 编码表，A-Z
    static char[] charArray = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'K',
            'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

    // 处理逻辑
    private static void solve(int number) {
        String numStr = Integer.toBinaryString(number);  // 将输入的数字转为二进制字符串
        boolean statu;
        StringBuilder stringBuilder = new StringBuilder();

        // 循环处理二进制数，每次处理7位
        while (numStr.length() > 0) {
            if (numStr.length() > 7) {
                statu = true;  // 如果长度大于7，表示需要处理多个字符
            } else {
                statu = false;
                int midIdx = 7 - numStr.length();
                for (int j = 0; j < midIdx; ++j) {
                    numStr = "0" + numStr;  // 不足7位时补充0
                }
            }

            // 提取最后7位
            String subStr = numStr.substring(numStr.length() - 7);  // 提取低7位
            numStr = numStr.substring(0, numStr.length() - 7);  // 删除已处理的低7位

            // 若需要，添加高位标志
            if (statu) {
                subStr = "1" + subStr;
            } else {
                subStr = "0" + subStr;
            }

            // 转换为16进制
            String resultStr = Integer.toHexString(Integer.parseInt(subStr, 2));  // 7位二进制转为16进制
            if (resultStr.length() == 1) {
                resultStr = "0" + resultStr;  // 16进制不足两位时补0
            }

            // 转换成字符
            for (int j = 0; j < resultStr.length(); ++j) {
                char c = resultStr.charAt(j);
                if (c <= 'z' && c >= 'a') {
                    c = charArray[c - 'a'];  // 小写字母转换为大写字母
                }
                stringBuilder.append(c);  // 将转换后的字符加入结果
            }
        }
        System.out.println(stringBuilder);  // 输出结果
    }

    public static void main(String[] args) {
        try {
            Scanner scan = new Scanner(System.in);
            int number = scan.nextInt();  // 输入数字
            if (number < 0) {
                System.out.println("input error");
                return;
            }
            solve(number);  // 调用处理方法
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}